BitTorrent 相关
Table of Contents
1. BT Client
transmission 功能少,资源占用少,性能表现不好,但由于更新不频繁,所以足够稳定。
qbittorrent 功能多,资源占用比 transmission 多,性能表现好,但由于更新很频繁,所以新版本的前几个小版本不是很稳定。
1.1. transmission
它原来主要在命令行下使用,后来才加了 Web UI 和 Desktop UI。并且,所有 UI 都通过 RPC 与 transmission daemon 通信。
1.1.1. UI 中对配置文件的修改没有保存到硬盘
它的 Web UI 有个问题,如果用户做了配置变更,那么只有在正常关闭 transmission-daemon 之后,配置才会被回写到 setting.json 文件中。
如果用户做了配置变更,但 transmission-daemon 没有正常关闭 (比如被 kill 命令关闭),那么用户做的配置变更就不会在下次启动生效,下次启动时生效的依旧是旧配置。
如果使用 docker 运行 transmission-daemon 和 UI 那么这个问题需要特别注意,因为有些打包得不好的镜像不能正常关闭 transmission-daemon,这会导致用户配置丢失。
1.2. qbittorrent
1.2.1. 将未完成的 torrent 保存到其他目录
qbittorrent 有个功能是 '保存未完成的 torrent 到' 指定路径,在 torrent 下载完成后一次性移动到目标目录。
这个操作的具体做法是,先复制下载完毕的整个 torrent 到目标目录,然后再删除源目录中的文件。这意味着一个 torrent 在被移动时需要文件系统的剩余空间大于 torrent 大小的 2 倍。
如果前一个 torrent 未迁移完,后一个 torrent 就已经下载完,那么必须要等前一个 torrent 迁移完成后,下一个完成的 torrent 才会开始迁移。
BT 下载中,文件被分片传输并存储到硬盘上,这会导致文件系统有大量碎片,几乎所有使用 CoW 的文件系统在下载文件方面都有这个问题。
比较好的解决方案是,另建一个目录并在该目录下不使用 CoW 功能,这个目录作为未完成的 torrent 的目录。这样一来,torrent 在被下载到不使用 CoW 的临时目录时,不会有文件碎片化的问题;torrent 下载完成后被复制到使用 CoW 的目录下,复制过程中的数据分片比 BT 下载产生的数据分片要大得多,碎片化程度可以大大减轻。但这个方案的缺点在于,一个 torrent 可能要被写 2 次,这对硬盘寿命有影响。
1.2.2. 标记了不被下载的文件也被下载了
BT 下载时会把 torrent 包含的所有文件按照一整个流来处理,每次只下载流中的某一个片段,而这个片段有可能横跨了两个文件。而 qbittorrent 处理的最小单位是整个流的一个片段,而不是某一个文件。
因此,如果两个文件相邻,用户将其中一个文件标记为不下载,某个片段又横跨了两个文件时,被标记不下载的文件有可能也会随着这个横跨两个文件的分片而被下载了一部分,从而出现在硬盘上。
1.2.3. 修改种子所包含的目录或文件的名称
这个功能常用于重命名种子所在的目录。具体路径是: 选中 torrent -> 内容 (content) -> 右键单击文件或目录 -> 重命名。
从其他的 BT 客户端向 qbittorrent 切换的时候也会用到。具体使用情景是,用户在其他的客户端中更改了 torrent 中的目录或文件的名称,然后 qbittorrent 不能识别被改名后的 torrent。此时就可以先把已经下载好的 torrent 的名字改回 .torrent 文件中记录的名字;向 qbittorrent 导入 .torrent 文件,qbittorrent 识别到下载好的 torrent 后,再用这个功能把文件或目录重命名为用户想要的名称。